<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>10000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>3645</td><th>4.36x</th><td>1776</td><td>2144</td><td>3920</td><td>3920</td><th>2.69x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1771</td><th>2.12x</th><td>1604</td><td>2445</td><td>4049</td><td>4049</td><th>2.78x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>1815</td><th>2.17x</th><td>3283</td><td>6834</td><td>10117</td><td>10117</td><th>6.93x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4419</td><th>5.29x</th><td>6247</td><td>3803</td><td>10050</td><td>10050</td><th>6.89x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>1825</td><th>2.18x</th><td>1272</td><td>2176</td><td>3448</td><td>3448</td><th>2.36x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>836</td><th>1x</th><td>769</td><td>726</td><td>1495</td><td>1495</td><th>1.02x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1397</td><th>1.67x</th><td>874</td><td>708</td><td>1582</td><td>1582</td><th>1.08x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>1544</td><th>1.85x</th><td>641</td><td>818</td><td>1459</td><td>1459</td><th>1x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>873</td><td>194</td><td>1067</td><td>1067</td><th>5.77x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>198</td><td>266</td><td>464</td><td>464</td><th>2.51x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>110</td><th>1.90x</th><td>244</td><td>2266</td><td>2510</td><td>2510</td><th>13.57x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>2185</td><td>423</td><td>2608</td><td>2608</td><th>14.10x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>135</td><td>385</td><td>520</td><td>520</td><th>2.81x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>90</td><td>131</td><td>221</td><td>221</td><th>1.19x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>92</td><td>93</td><td>185</td><td>185</td><th>1x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>89</td><th>1.53x</th><td>70</td><td>135</td><td>205</td><td>205</td><th>1.11x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>123</td><td>231</td><td>354</td><td>354</td><th>2.41x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>181</td><td>241</td><td>422</td><td>422</td><th>2.87x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>271</td><th>2.10x</th><td>285</td><td>551</td><td>836</td><td>836</td><th>5.69x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>576</td><td>394</td><td>970</td><td>970</td><th>6.60x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>134</td><td>231</td><td>365</td><td>365</td><th>2.48x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>76</td><td>76</td><td>152</td><td>152</td><th>1.03x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>95</td><td>61</td><td>156</td><td>156</td><th>1.06x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>222</td><th>1.72x</th><td>80</td><td>67</td><td>147</td><td>147</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>122</td><td>257</td><td>379</td><td>379</td><th>1.91x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>209</td><td>351</td><td>560</td><td>560</td><th>2.83x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>607</td><th>1.73x</th><td>1172</td><td>895</td><td>2067</td><td>2067</td><th>10.44x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>648</td><td>469</td><td>1117</td><td>1117</td><th>5.64x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>174</td><td>315</td><td>489</td><td>489</td><th>2.47x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>103</td><td>95</td><td>198</td><td>198</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>153</td><td>153</td><td>306</td><td>306</td><th>1.55x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>555</td><th>1.59x</th><td>89</td><td>133</td><td>222</td><td>222</td><th>1.12x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>98</td><td>177</td><td>275</td><td>275</td><th>2.39x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>154</td><td>204</td><td>358</td><td>358</td><th>3.11x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>53</td><th>2.94x</th><td>195</td><td>369</td><td>564</td><td>564</td><th>4.90x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>379</td><td>388</td><td>767</td><td>767</td><th>6.67x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>115</td><td>179</td><td>294</td><td>294</td><th>2.56x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>66</td><td>49</td><td>115</td><td>115</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>76</td><td>54</td><td>130</td><td>130</td><th>1.13x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>1.89x</th><td>72</td><td>70</td><td>142</td><td>142</td><th>1.23x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>136</td><td>241</td><td>377</td><td>377</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>198</td><td>529</td><td>727</td><td>727</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>90</td><th>0x</th><td>263</td><td>523</td><td>786</td><td>786</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>427</td><td>430</td><td>857</td><td>857</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>148</td><td>274</td><td>422</td><td>422</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>76</td><td>-1</td><td>75</td><td>75</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>111</td><td>94</td><td>205</td><td>205</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>53</td><th>0x</th><td>63</td><td>-1</td><td>62</td><td>62</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>135</td><td>507</td><td>642</td><td>642</td><th>3.57x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>221</td><td>371</td><td>592</td><td>592</td><th>3.29x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>356</td><th>3.30x</th><td>398</td><td>716</td><td>1114</td><td>1114</td><th>6.19x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>591</td><td>461</td><td>1052</td><td>1052</td><th>5.84x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>217</td><td>352</td><td>569</td><td>569</td><th>3.16x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>80</td><td>100</td><td>180</td><td>180</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>144</td><td>97</td><td>241</td><td>241</td><th>1.34x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>301</td><th>2.79x</th><td>69</td><td>130</td><td>199</td><td>199</td><th>1.11x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>0x</th><td>116</td><td>239</td><td>355</td><td>355</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>0x</th><td>179</td><td>340</td><td>519</td><td>519</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>187</td><th>0x</th><td>312</td><td>654</td><td>966</td><td>966</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>0x</th><td>449</td><td>424</td><td>873</td><td>873</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>0x</th><td>193</td><td>251</td><td>444</td><td>444</td><th>0x</th></tr><tr class=''><th class='c1'>ProtoBuf.net</th><td>40</td><th>0x</th><td>69</td><td>51</td><td>120</td><td>120</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>0x</th><td>112</td><td>114</td><td>226</td><td>226</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>133</td><th>0x</th><td>81</td><td>-1</td><td>80</td><td>80</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>101</td><td>177</td><td>278</td><td>278</td><th>2.04x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>155</td><td>197</td><td>352</td><td>352</td><th>2.59x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>38</td><th>3.45x</th><td>178</td><td>673</td><td>851</td><td>851</td><th>6.26x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>592</td><td>396</td><td>988</td><td>988</td><th>7.26x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>112</td><td>156</td><td>268</td><td>268</td><th>1.97x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>75</td><td>61</td><td>136</td><td>136</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>86</td><td>68</td><td>154</td><td>154</td><th>1.13x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>3.09x</th><td>70</td><td>78</td><td>148</td><td>148</td><th>1.09x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>103</td><td>173</td><td>276</td><td>276</td><th>2.16x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>155</td><td>208</td><td>363</td><td>363</td><th>2.84x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>64</td><th>1.88x</th><td>284</td><td>384</td><td>668</td><td>668</td><th>5.22x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>383</td><td>393</td><td>776</td><td>776</td><th>6.06x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>116</td><td>166</td><td>282</td><td>282</td><th>2.20x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>62</td><td>75</td><td>137</td><td>137</td><th>1.07x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>74</td><td>56</td><td>130</td><td>130</td><th>1.02x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>58</td><th>1.71x</th><td>58</td><td>70</td><td>128</td><td>128</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>120</td><td>246</td><td>366</td><td>366</td><th>2.79x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>176</td><td>401</td><td>577</td><td>577</td><th>4.40x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>255</td><th>2.34x</th><td>332</td><td>615</td><td>947</td><td>947</td><th>7.23x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>502</td><td>478</td><td>980</td><td>980</td><th>7.48x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>129</td><td>210</td><td>339</td><td>339</td><th>2.59x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>67</td><td>64</td><td>131</td><td>131</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>80</td><td>64</td><td>144</td><td>144</td><th>1.10x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>196</td><th>1.80x</th><td>75</td><td>75</td><td>150</td><td>150</td><th>1.15x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>101</td><td>182</td><td>283</td><td>283</td><th>2.40x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>155</td><td>206</td><td>361</td><td>361</td><th>3.06x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>61</td><th>3.21x</th><td>195</td><td>365</td><td>560</td><td>560</td><th>4.75x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>391</td><td>401</td><td>792</td><td>792</td><th>6.71x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>140</td><td>182</td><td>322</td><td>322</td><th>2.73x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>150</td><td>75</td><td>225</td><td>225</td><th>1.91x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>74</td><td>62</td><td>136</td><td>136</td><th>1.15x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>55</td><th>2.89x</th><td>58</td><td>60</td><td>118</td><td>118</td><th>1x</th></tr>
</tbody>
</table>
</body>
</html>

